#ifndef ROOM_HH
#define ROOM_HH

#include <vector>
#include <list>
#include "textevent.hh"
#include "element.hh"

/*
  Les instances sont crées lors quand l'instance de Game 
  charge une salle
  Il demande alors a ResourceLoader de parser le fichier
  et retourne l'instance mappée
*/
class Room {
private:
  /*
    identifiant de la salle
  */
  int id_;

  /*
    Fonctionne comme Element.image_
  */
  std::string img_src_;

  /*
    Un pointeur sur l'élement sur lequel le joueur à cliqué
  */
  Element* selectedElement_;

  /*
    La liste des éléments interactifs de la scène
  */
  std::vector<Element*> vectorElements_;

  /*
    Les dialogues et notifications de cette salle
  */
  std::vector<TextEvent*> vectorTextEvent_;

  /*
    L'evenement qui doit se lancer au chargement de la salle
  */
  int autoTextEventId_;

  /*
    Indique si on sauvegarde en debut de salle
  */
  bool isSave_;

public:
  Room(int);
  ~Room();

  int getId();
  std::string getImgSrc();

  Element* getSelectedElement();

  std::vector<Element*> getVectorElements();

  std::vector<TextEvent*> getVectorTextEvents();

  int getAutoTextEventId();

  bool getIsSave();

  void setImgSrc(std::string);

  void setSelectedElement(Element*);

  void setAutoTextEventId(int);

  void setIsSave(bool);

  void addElement(Element*);

  void addTextEvent(TextEvent*);
};
#endif
